Often in a networking environment it is advantageous to have redundant resources. For example, redundancy may be used to increase the fault tolerance of a network. One of the difficulties of taking advantage of redundant computer systems, however, lies in transitioning from one computer system to the other with minimal disruption on the software applications that may be using resources associated with the primary computer system. For instance, upon such a transition, to assure network traffic destined for a primary computer system is, instead, sent to a redundant computer system, one approach would be to move the addresses associated with the primary computer system to the redundant computer system. This involves moving the primary computer system's logical address (e.g., an Internet Protocol (IP) address) and the hardware or physical address (e.g., an Ethernet address) embedded in the primary computer system's communication device to the redundant computer system. However, since hardware addresses are typically assigned and burned into communication devices by the manufacturer, they are usually thought of as fixed. Therefore, an approach that requires a hardware address to be moved from one communication device to another is quite unnatural.
In addition, third-party software applications, provided by Microsoft and other software vendors, would require modification to handle this redundancy scheme. Applications would have to be altered to react appropriately during a transition from one computer system to another. For example, upon detecting such a transition, the applications might need to be configured to store their current state, terminate existing connections with the primary computer system, re-establish the appropriate connections with the redundant computer system, and then resume processing with the redundant computer system at the stored state. It should be appreciated that an approach to network redundancy involving rewriting third-party software applications is neither desirable nor directly available to designers and manufacturers of networking equipment, as such an approach would likely require the consent and cooperation of many different software vendors.
In view of the foregoing, what is needed is an elegant mechanism for transitioning between redundant computer systems. Specifically, it would be advantageous to perform the transition without having to perform the awkward step of moving a hardware address from one communication device to another. Ideally, the transition should also be transparent to software applications that may have been communicating with the primary computer system prior to the transition.